RDBMS 와 NoSQL의 차이
mongoDB의 공식 Document를 참고해서 정리하였습니다.
🎈 RDBMS의 역사와 NoSQL의 탄생배경
관계형 데이터베이스(RDBMS)
는 40년 넘게 사용되었다.
- 데이터 구조가 훨씬 더 단순하고 정적인 시대에는 충분했다. 그러나 기술과 빅 데이터 응용 프로그램이 발전함에 따라 기존의 SQL 기반 관계형 데이터베이스는 빠르게 확장되는 데이터 볼륨과 데이터 구조의 증가하는 복잡성을 처리하기 힘들었다.
비관계형 NoSQL 데이터베이스
는 기존 SQL 기반 관계형 데이터베이스에 대한 대안으로 탄생하였다.- 유연하고 확장 가능하며 비용 효율적인 대안을 제공한다.
🛠 데이터 모델, 스키마, 구조, 스케일링
NoSQL
-
동적 스키마를 제공하며
비정형 데이터
로 알려진 것을 사용할 수 있다. -
먼저 스키마를 정의하지 않고도 애플리케이션을 빌드할 수 있다.
-
미리 정의된 스키마가 필요하지 않기 때문에 NoSQL 데이터베이스는 데이터와 요구 사항이 변경될 때 업데이트하기가 훨씬 쉽다.
-
문서 기반, 그래프 데이터베이스, key-value 쌍 또는 넓은 열 저장소
-
확장에 있어서, 관계형 데이터베이스에 비해 훨씬 저렴하다.
-
저렴한 상용 서버에 수평적으로 확장하여 용량을 추가할 수 있기 때문
-
RDBMS
-
데이터베이스에 데이터를 추가하기 전에 스키마를 정의해야 한다.
-
스키마 구조를 변경하는 것은 비용이 많이 들고 시간이 많이 소요되고 서비스 다운 등의 현상이 일어난다.
-
테이블 기반
-
수직 확장이 가능하지만 일반적으로 비용이 많이 듭니다.
- 전체 데이터베이스를 호스팅하려면 단일 서버가 필요하기 때문에 확장하려면 더 크고 더 비싼 서버를 구입해야 하기 때문
🛠 RDBMS와 NoSQL의 차이(표)
RDBMS | NoSQL | |
---|---|---|
데이터 저장 모델 | 행과 열이 고정된 테이블 | 문서: JSON 문서 키-값: 키-값 쌍 와이드 열: 행과 동적 열이 있는 테이블 그래프: 노드 및 가장자리 |
개발 이력 | 데이터 중복 감소에 중점을 두고 1970년대에 개발됨 | 2000년대 후반에 확장에 중점을 두고 애자일 및 DevOps 방식으로 구동되는 신속한 애플리케이션 변경을 허용하도록 개발됨. |
예 | Oracle, MySQL, Microsoft SQL Server 및 PostgreSQL | 문서: MongoDB 및 CouchDB 키-값: Redis 및 DynamoDB 와이드 컬럼: Cassandra 및 HBase 그래프: Neo4j 및 Amazon Neptune |
주요 목적 | 범용 | 문서: 범용 키-값: 단순 조회 쿼리를 통한 대용량 데이터 와이드 컬럼: 예측 가능한 쿼리 패턴을 갖는 대용량 데이터 그래프: 연결된 데이터 간의 관계 분석 및 탐색 |
스키마 | 엄격한 | 유연한 |
스케일링 | 수직(더 큰 서버로 확장) | 수평(일반 서버 전반에 걸쳐 확장) |
다중 레코드 ACID 트랜잭션 | 지원 | 대부분은 다중 레코드 ACID 트랜잭션을 지원하지 않음. 그러나 MongoDB와 같은 일부는 지원함. |
조인 | 일반적으로 필수 | 일반적으로 필요하지 않음 |
데이터-객체 매핑 | ORM(객체 관계형 매핑) 필요 | 대부분의 경우 ORM이 필요하지 않다. MongoDB 문서는 가장 널리 사용되는 프로그래밍 언어의 데이터 구조에 직접 매핑됨. |
reference: https://www.mongodb.com/scale/nosql-vs-relational-databases